Data processing systems with distributed architecture have become increasingly popular in the last years, particularly following the widespread diffusion of the Internet. In a distributed system, client computers exploit services offered by server computers across a network.
Two or more servers can be grouped into a cluster, so as to appear as a single computer to the clients; the cluster provides a single point of management and facilitates the scaling of the system to meet increasing demand. The clustering techniques known in the art can be classified into two distinct categories, which conform to the load-balancing model or the fail-over model, respectively.
The load-balancing clusters tend to optimize the distribution of the workload across the servers. Particularly, in a cluster of the network load balancing type the incoming requests from the clients are distributed across the servers, which share a single (virtual) network address. On the other hand, in a cluster of the component load balancing type any application is mirrored on all the servers; in this way, any request received from the clients is forwarded to the server that is best suited to its handling.
Conversely, the fail-over clusters are aimed at providing high availability. For this purpose, whenever a resource (providing a corresponding service) experiences a failure its operation is taken over by another server (which is predefined during the configuration of the cluster). Particularly, in a fail-over cluster of the shared-nothing type every resource is replicated on all the servers; however, only one server at the time can own the resource. Otherwise, in a fail-over cluster of the shared-everything type all the servers are given equal access to the resources (through a distributed lock manager that grants the access in mutual exclusion). A typical example of service that implements a fail-over cluster supporting the shared-nothing style is the Microsoft Windows Cluster Service (MSCS); the MSCS is described in detail in “Introducing Microsoft Cluster Service (MSCS) in the Windows Server 2003 Family”—Mohan Rao Cavale—November 2002, which is available at “http://www.msdn.microsoft.com/library”.
However, the load-balancing clusters and the fail-over clusters are based on completely different approaches that are incompatible to each other.
Particularly, the fail-over clusters (such as the ones based on the MSCS) lack any support for distributing the workload across the servers.
Therefore, even though the fail-over clusters known in the art provide a high availability they are completely ineffective in increasing the performance of the system.